#include "Socket.hpp"

#include <header.h>
// #include <unistd.h> // for close()
//#include <sys/socket.h> // for shutdown()
//#include <iostream> // for perror()

namespace xww
{
    Socket::Socket()
    :_fd()
    {
        _fd = socket(AF_INET,SOCK_STREAM,0);
        if(_fd < 0)
        {
            perror("socket error");
        }
    }

    Socket::Socket(int fd)
    :_fd(fd)
    {

    }

    Socket::~Socket()
    {
        close(_fd);
    }

    //通过成员函数getfd()获取文件描述符
    int Socket::getfd() const
    {
        return _fd;
    }

    void Socket::shutdownWrite()
    {
        //关闭写端
        //shutdown()函数用于关闭套接字的某个方向的通信
        //SHUT_WR表示关闭写端
        //这意味着不能再向套接字发送数据，但仍然可以接收数据
        //如果套接字是非阻塞的，调用shutdown()可能会失败
        //如果套接字是阻塞的，调用shutdown()会阻塞直到操作
        shutdown(_fd, SHUT_WR);
    }



}//end of namespace xww